package com.njbw.user.event;

import com.alibaba.fastjson.JSON;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import org.springframework.transaction.event.TransactionalEventListener;

/**
 * 使用场景：没必要用 MQ 的时候就用 Event
 * 但是要可以接受一些丢、一些业务异常，如果对业务要求比较高，还是得使用 MQ
 */
@Service
@Log4j2
public class PersonEventListener {

    @TransactionalEventListener(classes = {PersonChangeEvent.class}, fallbackExecution = true)
    public void listenerCreateEvent(PersonChangeEvent event) {
        switch (event.getOperateType()) {
            case "create":
                // 大家应该写自己的业务逻辑了
                log.info("执行创建事件 {}", JSON.toJSONString(event.getPerson()));
                break;
            default:
                break;
        }
    }
}
